package br.com.hstar.client.cliente.cartaofidelidade;

import java.util.ArrayList;

import br.com.hstar.client.ServiceFactory;
import br.com.hstar.client.util.Listagem;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
import com.google.gwt.user.client.ui.Widget;

public class CartaoFidelidadeListPanel extends Listagem implements TableListener {

	private Button inserir;
	
	public CartaoFidelidadeListPanel(String title) {
		super(title);
		
		//adiciona o evento de click a tabela
		super.getSortableTable().addTableListener(this);
			
		//cria o botao de inserir e adiciona o evento de click a ele
		inserir = new Button("Inserir");	
		inserir.addClickListener( new ClickListener() {
			public void onClick(Widget sender) {
				RootPanel.get("boxContent").clear();
				RootPanel.get("boxContent").add(new CartaoFidelidadeEditPanel("Cartão Fidelidade - Inserir"));
			}
		});
		add(inserir);
		
	    //faz a busca para montar a tabela com a slista de dos resultados
		ServiceFactory.createCartaoFidelidadeService().listAll(new ListAllAsyncCallback());
		
	}

	//Inner class -------------------------------------------------------------------
	private class ListAllAsyncCallback implements AsyncCallback {
		public void onFailure(Throwable caught) {
			Window.alert("Erro ao listar Cartão Fidelidade");
		}

		public void onSuccess(Object result) {
			ArrayList cartaoFidelidadeList = (ArrayList) result;
			String[] columnNames = CartaoFidelidadeUI.getColumns();

			addContents(columnNames, cartaoFidelidadeList);
		}
	}

	//metodo responsavel por tratar o click da tabela de listagem
	public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
		if(row != 0){
			
			HTML html = new HTML(super.getHTMLFromTable(row, 0));
			int id = new Integer(html.getText().toString().trim()).intValue();
			RootPanel.get("boxContent").clear();
			RootPanel.get("boxContent").add(
					new CartaoFidelidadeEditPanel( "Cartão Fidelidade - Alterar", new Long(id)));
		} else {
			super.setSortColIndex(cell);
			sort(cell);
			drawTable();
		}
	}

}
